perm filename M11IO.FAI[P11,LCS]2 blob
sn#435738 filedate 1979-04-23 generic text, type T, neo UTF8
00100 TITLE M11IO
00200 INTERNAL PUTEXT,EXTOUT,FINEXT,OSC,OUTP,INITIT,AD2,MLT,DIV,SUB
00300 EXTERNAL LM,NT,GENS,ROUT,XIN,LOCG,LFUNC,XIN,.COMM.,INS
00400
00500 DEFINE P <17>
00600
00700 CH3←13
00800 CH←12
00900 CH2←11
01000 BLKS←←=1
01100
01200 REGS: BLOCK 20
01300 DIR: BLOCK 4
01400
01500 ;CALL PUTEXT(<FILE>,<EXT>)
01600 PUTEXT: 0 ;USES EXTOUT,FINEXT, CH2
01700 MOVE 0,@0(16)
01800 MOVEM 0,FILNAM
01900 MOVE 0,@1(16)
02000 MOVEM 0,EXTNAM
02100 JSA 16,INTFIL
02200 SETZM DIR+2
02300 SETZM DIR+3
02400 ENTER CH2,DIR
02500 0
02600 JRA 16,2(16)
02700
02800 ;CALL EXTOUT(<ARRAY>,<NO. OF WORDS>)
02900
03000 EXTOUT: 0
03100 HRRZ 0,0(16)
03200 SUBI 0,1
03300 MOVEM 0,COM
03400 MOVN 0,@1(16)
03500 HRLM 0,COM
03600 OUTPUT CH2,COM
03700 STATZ CH2,740000
03800 0
03900 JRA 16,2(16)
04000
04100
04200 INTFIL: 0 ;INITS DSK
04300 MOVEI REGS
04400 BLT REGS+3
04500 INIT CH2,17
04600 SIXBIT/DSK/
04700 0
04800 0
04900 INTF4: MOVE 0,FILNAM#
05000 MOVEM 0,FN#
05100 MOVE 1,[POINT 7,FN]
05200 INTF3: MOVE 2,[POINT 6,DIR]
05300 SETZM DIR
05400 MOVEI 3,5
05500 INTF1: ILDB 0,1
05600 CAIN 0," "
05700 JRST INTF2
05800 SUBI 0,40
05900 IDPB 0,2
06000 SOJG 3,INTF1
06100 INTF2: HRLZI REGS
06200 BLT 3
06300 MOVE 0,EXTNAM#
06400 MOVEM 0,EX#
06500 MOVE 1,[POINT 7,EX]
06600 EXTF3: MOVE 2,[POINT 6,DIR+1]
06700 SETZM DIR+1
06800 MOVEI 3,5
06900 EXTF1: ILDB 0,1
07000 CAIN 0," "
07100 JRST EXTF2
07200 SUBI 0,40
07300 IDPB 0,2
07400 SOJG 3,EXTF1
07500 EXTF2: HRLZI REGS
07600 BLT 3
07700 JRA 16,0(16)
07800
07900
08000 COM: OCT 0,0
08100 BLKNUM: 0
08200
08300 ;CALL FINEXT
08400 FINEXT: 0
08500 CLOSE CH2,0
08600 STATZ CH2,740000
08700 0
08800 RELEASE CH2,0
08900 JRA 16,0(16)
09000 OSC: 0 ;OSC UNIT GENERATOR
09100 MOVE 2,LM+3 ;L4
09200 SKIPE LM+=13 ; IF(M4.EQ.0)L4=LOCG(INT(RNT(L4)))
09300 JRST OSC1
09400 KIFIX 2,NT-1(2) ;RNT(L4) AC2=L4 POINTER IN FUNC
09500 MOVE 2,LOCG-1(2) ;L4
09600 OSC1: MOVE 1,LM+4 ;L5
09700 MOVE 15,NT-1(1) ;SUM
09800 MOVE 12,LM+=10 ;M1
09900 MOVE 11,LM+=11 ;M2
10000 MOVE 14,XIN ;AMP
10100 MOVE 10,XIN+1 ;FREQ
10200 OSC2: SETZ 4, ;J3
10300 OSC3: KIFIX 5,15 ;AC5=J4
10400 ADD 5,2 ;+L4 POINTER TO START OF THIS FUNC.
10500 MOVE 13,GENS-1(5) ;F
10600 JUMPG 11,O286
10700 FADR 15,10 ;SUM
10800 JRST O290
10900 O286: MOVE 6,4
11000 ADD 6,LM+1 ;J4
11100 FADR 15,ROUT-1(6) ;SUM
11200 O290: CAML 15,LFUNC+1 ;XNFUN
11300 JRST O287
11400 ; JUMPL 15,O289
11500 O288: MOVE 6,4
11600 ADD 6,LM+2 ;J5
11700 JUMPG 12,O292
11800 MOVE 14 ;AMP
11900 JRST O293
12000 O287: FSBR 15,LFUNC+1
12100 JRST O288
12200 ;;O289: FADR 15,LFUNC+=1
12300 ;; JRST O288
12400 O292: MOVE 7,4
12500 ADD 7,LM ;AC7=J6
12600 MOVE ROUT-1(7)
12700 O293: FMPR 13
12800 MOVEM ROUT-1(6)
12900 AOJ 4,
13000 CAMG 4,LM+=20 ;NSAMX
13100 JRST OSC3
13200 MOVEM 15,NT-1(1)
13300 JRA 16,(16)
13400
13500 OUTP: 0
13600 MOVE 2,LM+1
13700 MOVE 4,LM
13800 MOVE 1,2
13900 ADD 1,LM+=20
14000 OU1: MOVE 3,ROUT-1(4)
14100 FADRM 3,ROUT-1(2)
14200 AOJ 2,
14300 AOJ 4,
14400 CAMG 2,1
14500 JRST OU1
14600 JRA 16,(16)
14700
14800 INITIT: 0 ;CALL INITIT(J3) COMMON /LM/L(10),M(10),NSAMX
14900 MOVE 1,.COMM.+5 ;I6 COMMON I(1) /P/P(1) /GENS/GENS(1) /LFUNC/LFUNC,XNFUN
15000 ADDI 1,2 ;N1 C COMMON INITIALIZATION OF GENERATORS
15100 MOVE 2,INS-2(1) ; N1=I6+2
15200 SOJ 2, ↔ MOVE 5,[=1000] ; N2=INS(N1-1)-1
15300 MOVE 6,1
15400 I204: MOVE 3,6 ; DO 204 J1=N1,N2
15500 AOJ 3, ↔ SUB 3,1 ; J2=J1-N1+1
15600 SKIPL 4,INS-1(6) ↔ JRST I201 ;IF(INS(J1).GE.0)GO TO 201
15700 MOVNM 4,LM-1(3) ; 200 L(J2)=-INS(J1)
15800 MOVEI 0,1 ↔ MOVEM LM+=9(3) ; M(J2)=1
15900 JRST J204 ; GO TO 204
16000 I201: SETZM LM+=9(3) ; 201 M(J2)=0
16100 CAMG 5,INS-1(6) ; IF(INS(J1)-26262.GT.0)GO TO 203
16200 JRST I203 ;C***** WHAT DOES THE BIG NUMBER DO?????
16300 ;C*** IT SEEMS TO BE JUST TO MAKE A FLAG. NOW CHANGED TO FIT INTO 16BITS.
16400 ADD 4,.COMM.+2 ↔ SOJ 4, ; 202 L(J2)=INS(J1)+I3-1
16500 ;;; SKIPA ; GO TO 204
16600 ;;;I203: SUB 4,5 ;203 L(J2)=INS(J1)-26262
16700 I203: MOVEM 4,LM-1(3)
16800 J204: CAMGE 6,2 ; 204 CONTINUE
16900 AOJA 6,I204
17000 MOVE 1,INS-3(1) ; N3=INS(N1-2)
17100 SUBI 1,=100 ↔ MOVEM 1,@(16) ↔ JRA 16,1(16) ; J3= N3 -100
17200
17300 AD2: 0
17400 MOVE 10,[FADR 3,0]
17500 OPR: MOVE 2,LM+=20 ;NSAMX
17600 ADD 2,LM+2 ; +L3
17700 MOVE 0,XIN+1 ;XIN2
17800 MOVE 4,LM+=10 ;M1
17900 MOVE 5,LM+=11 ;M2
18000 MOVE 7,LM+2 ;L3
18100 MOVE 1,LM ;L1
18200 MOVE 6,LM+1 ;L2
18300 ADA: JUMPLE 4,ADB ;IF(M1.LE.0)GO TO ADB
18400 MOVE 3,ROUT-1(1) ;ROUT(L1+J3)
18500 AOJA 1,ADB+1 ;ADD 1 AND SKIP
18600 ADB: MOVE 3,XIN ;AC3 MUST BE RESET EACH TIME.
18700 JUMPLE 5,ADC ;IF(M2.LE.0)GO TO ADC
18800 MOVE 0,ROUT-1(6) ;ROUT(L2+J3)
18900 AOJ 6,
19000 ;; AOJA 6,ADC+1
19100 ;;ADC: MOVE 0,XIN+1
19200 ADC: XCT 10 ;GO DO ADDITION
19300 MOVEM 3,ROUT-1(7) ;PUT RESULT INTO OUTPUT BLOCK
19400 AOJ 7, ;UPDATE POINTER
19500 CAMG 7,2 ;IF 7 .LE.NSAMX+ARRAY START)GO BACK FOR MORE
19600 JRST ADA
19700 JRA 16,(16)
19800
20700 MLT: 0
20800 MOVE 10,[FMPR 3,0]
20900 JRST OPR
21000 DIV: 0
21100 MOVE 10,[FDVR 3,0]
21200 JRST OPR
21300 SUB: 0
21400 MOVE 10,[FSBR 3,0]
21500 JRST OPR
21600 END